package com.ruoyi.electricity.mapper;

import com.ruoyi.electricity.domain.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface ElectricityStatisticsMapper {
    List<PAEnergyCountForTheDay> countPAEnergyForTheDay();

    List<ElectricityDataVo> selectElectricityDataEveryMinuteOfTheDay(@Param("equipCode") String equipCode, @Param("date") Date date);

    List<RegionalElectricityConsumptionRanking> selectRegionalElectricityConsumptionRanking();

    List<ElectricityConsumptionAndOutputInTimeDimension> selectDailyElectricityConsumptionAndOutputForCurrentMonth();

    List<ElectricityTypePowerConsumption> selectPowerConsumptionOfEachElectricityType();

    List<ElectricityAlarmCountInTimeDimension> selectDailyElectricityAlarmForCurrentMonth();

    List<ElectricityAlarmLevelCount> selectNumberOfEachElectricityAlarmLevelForCurrentMonth();

    List<OnlineStatusCount> selectNumberOfEachOnlineStatusForCurrentDay();

    List<HiddenSateCountInTimeDimension> selectNumberOfEachHiddenSateForCurrentMonth();

    List<AlarmsHandleCountForTheDay> countEveryAlarmLevelForTheDay();

    List<EquipSecurityStatusCount> countEquipSecurityStatus();

    List<AlarmsHandleCountForEachHourOfTheDay> countAlarmsForEachHourOfTheDay();
    List<PAEnergyForEveryDay> countPAEnergyForEveryDay(@Param("startTime") Date startTime, @Param("endTime")Date endTime, @Param("equipCode")String equipCode);
    List<AlarmsCountForEveryDay> countAlarmsForEveryDay(@Param("startTime")Date startTime, @Param("endTime")Date endTime);

    List<AlarmCountForEachLevel> countAlarmForEachLevel(@Param("startTime")Date startTime, @Param("endTime") Date endTime);

    List<ALarmCountForEachEquip> countALarmForEachEquip(@Param("startTime")Date startTime, @Param("endTime") Date endTime);

    List<MaxAndAvgElectricityVo> selectMaxAndAvgElectricityOfTheDay(String equipCode);

    List<OpenStopOfflineCount> countOpenStopOffline();

    List<PAEnergyForEveryDay> countTotalElectricityConsumptionInSevenDays(Integer days);
}
